﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;

namespace WindowsPhoneApplication3
{
    public partial class DatosPage : PhoneApplicationPage
    {
		public string [] textos;
        public MainPage pagina;
        public DatosPage()
        {
            InitializeComponent();
            pagina = new MainPage();
			textos = new string [2];
        }

        private void Tap_Flecha(object sender, System.Windows.Input.GestureEventArgs e)
        {
        	NavigationService.GoBack();
        }
		/// <summary>
		/// Método que verifica si el formato en que se ingresan lo datos (excepto código variedad) es el correcto
		/// </summary>
		/// <param name="a"></param>
		/// <param name="campo"></param>
		public void valido (TextBox a, string campo)
		{
			List <char> c  = a.Text.ToList(); 
            int puntuacion = 0;
            foreach (char n in c)
            {
                if (n == '.') puntuacion += 1;
                if (puntuacion > 1)
                {
                    MessageBox.Show("Se ha asigando mas de un signo de un signo de puntuación en el campo " + campo);
                    break;
                }
            }
		}
        /// <summary>
        /// Método que verifica si el formato en que se ingrese el código de variedad es el correcto
        /// </summary>
        /// <param name="a"></param>
        /// <param name="campo"></param>
		public void validovariedad(TextBox a, string campo)
		{
			List <char> c  = a.Text.ToList(); 
            foreach (char n in c)
            {
                if (n == '.')
                {
                    MessageBox.Show( campo + " debe ser un numero entero");
                    break;
                }
            }
		}
        /// <summary>
        /// Método booleano que verifica si el formato en que se ingresan lo datos (excepto código variedad) es el correcto
        /// </summary>
        /// <param name="a"></param>
        /// <param name="campo"></param>
        /// <returns></returns>
		public bool valido2 (TextBox a, string campo)
		{
			List <char> c  = a.Text.ToList(); 
            int puntuacion = 0;
			if (a.Text == "") 
				{
					MessageBox.Show("Ingrese datos en campo " + campo);
					return false;
				}
				
            foreach (char n in c)
            {
                if (n == '.') puntuacion += 1;
                if (puntuacion > 1)
                {
                    MessageBox.Show("Se ha asignado mas de un signo de un signo de puntuación en el campo " + campo);
					return false;
                }
            }
            return true;
		}
        /// <summary>
        /// Método booleano que verifica si el formato en que se ingresa el código variedad  es el correcto
        /// </summary>
        /// <param name="a"></param>
        /// <param name="campo"></param>
        /// <returns></returns>
        public bool valido2variedad(TextBox a, string campo)
        {
            List<char> c = a.Text.ToList();
            if (a.Text == "")
            {
                MessageBox.Show("Ingrese datos en campo " + campo);
                return false;
            }

            foreach (char n in c)
            {
                if (n == '.')
                {
                    MessageBox.Show(campo + " debe ser un número entero");
                    return false;
                }
            }
            return true;
        }			

		private void RRegado_Checked(object sender, System.Windows.RoutedEventArgs e)
		{
			this.textos[1] = "1";
		}

		private void Ingresar_Click(object sender, System.Windows.RoutedEventArgs e)
		{
			while(true)
			{
                List<string> doc = new List<string>();
                if (valido2variedad(tidvariedad, "Id Variedad") == false) break;
                else if (valido2(tfs, "FS") == false) break;
                else if (valido2(tds, "DS") == false) break;
                else if (valido2(tBolsa, "Bolsa") == false) break;
                else if (valido2(tfb, "FB") == false) break;
                else if (valido2(ttg, "TG") == false) break;
                else if (valido2(twg, "WG") == false) break;
                else if (valido2(tdg, "DG") == false) break;
                else if (valido2(tha, "HA") == false) break;
                else if (valido2(tglauco, "GLAUCO") == false) break;
                else if (valido2(tap, "AP") == false) break;
                else if (valido2(tle, "LE") == false) break;
                else if (valido2(tpm, "PM") == false) break;
                else if (valido2(tvI, "VI") == false) break;
                else if (valido2(tat, "AT") == false) break;
                else if (valido2(tah1, "AH1") == false) break;
                else if (valido2(tlh1, "LH1") == false) break;
                else if (valido2(tah2, "AH2") == false) break;
                else if (valido2(tlh2, "LH2") == false) break;
                else if (valido2(tah3, "AH3") == false) break;
                else if (valido2(tlh3, "LH3") == false) break;
                else if (valido2(tmje, "TGMJE") == false) break;
                else if (valido2(Cobertura, "COBERTURA") == false) break;
                else if (textos[0] == null) { MessageBox.Show("Ingrese tipo de ensayo"); break; }
                else if (textos[1] == null) { MessageBox.Show("Ingrese número de ensayo"); break; }
                doc.Add(tidvariedad.Text);
                doc.Add(textos[0]);
                doc.Add(textos[1]);
                doc.Add(datePickerSiembra.ValueString);
                doc.Add(datePickerEmergencia.ValueString);
                doc.Add(datePickerEspigadura.ValueString);
                doc.Add(datePickerFloracion.ValueString);
                doc.Add(datePickerMadurez.ValueString);
                doc.Add(tfs.Text);
                doc.Add(tds.Text);
                doc.Add(tBolsa.Text);
                doc.Add(tfb.Text); 
                doc.Add(ttg.Text);
                doc.Add(twg.Text); 
                doc.Add(tdg.Text); 
                doc.Add(tha.Text); 
                doc.Add(tglauco.Text);
                doc.Add(tap.Text); 
                doc.Add(tle.Text);
                doc.Add(tpm.Text); 
                doc.Add(tvI.Text); 
                doc.Add(tat.Text); 
                doc.Add(tah1.Text); 
                doc.Add(tlh1.Text); 
                doc.Add(tah2.Text); 
                doc.Add(tlh2.Text); 
                doc.Add(tah3.Text); 
                doc.Add(tlh3.Text); 
                doc.Add(tmje.Text); 
                doc.Add(Cobertura.Text); 
               
				// Código obtenido de http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714087(v=vs.105).aspx
				// Get the local folder.
    			System.IO.IsolatedStorage.IsolatedStorageFile local = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication();

    			// Create a new folder named DataFolder.
    			if (!local.DirectoryExists("DataFolder"))
        			local.CreateDirectory("DataFolder");

    			// Create a new file 
				string fecha = pagina.fecha.Day.ToString() + "-" + pagina.fecha.Month.ToString() + "-" + pagina.fecha.Year.ToString() + ".txt";

                // Si el archivo no existe
                if (local.FileExists("DataFolder\\" + fecha) == false)
                {
    			    using (var isoFileStream = 
            	    new System.IO.IsolatedStorage.IsolatedStorageFileStream("DataFolder\\"+ fecha, System.IO.FileMode.Append,local))
    		        {
        		    // Write the data from the textbox.
        		        using (var isoFileWriter = new System.IO.StreamWriter(isoFileStream))
        		        {
                            isoFileWriter.WriteLine(pagina.fecha.Day.ToString() + ";" + pagina.fecha.Month.ToString() + ";" + pagina.fecha.Year.ToString());
                            for (int k = 0; k < doc.Count();k++ )
                            {
                                if (k == doc.Count()-1)
                                {
                                    isoFileWriter.WriteLine(doc[k]);
                                    break;
                                }
                                isoFileWriter.Write(doc[k] + ";");
                            }

                            //Limpio datos 
							doc.Clear();
                            tidvariedad.Text = "";
                            datePickerSiembra.Value = DateTime.Now;
                            datePickerEmergencia.Value = DateTime.Now;
                            datePickerEspigadura.Value = DateTime.Now;
                            datePickerFloracion.Value = DateTime.Now;
                            datePickerMadurez.Value = DateTime.Now;
                            tfs.Text = "";
                            tds.Text = "";
                            tBolsa.Text = "";
                            tfb.Text = "";
                            ttg.Text = "";
                            twg.Text = "";
                            tdg.Text = "";
                            tha.Text = "";
                            tglauco.Text = "";
                            tap.Text = "";
                            tle.Text = "";
                            tpm.Text = "";
                            tvI.Text = "";
                            tat.Text = "";
                            tah1.Text = "";
                            tlh1.Text = "";
                            tah2.Text = "";
                            tlh2.Text = "";
                            tah3.Text = "";
                            tlh3.Text = "";
                            tmje.Text = "";
                            Cobertura.Text = "";
                            RRegado.IsChecked = false;
                            RSecano.IsChecked = false;
                            RRepeticion1.IsChecked = false;
                            RRepeticion2.IsChecked = false;
                            Array.Clear(textos, 0, textos.Count());
					        break;
        		        }
    		        }
                }
                
                //  Si el archivo existe 
                else 
                    {
                       using (var isoFileStream = 
            	    new System.IO.IsolatedStorage.IsolatedStorageFileStream("DataFolder\\"+ fecha, System.IO.FileMode.Append,local))
    		        {
        		    // Write the data from the textbox.
        		        using (var isoFileWriter = new System.IO.StreamWriter(isoFileStream))
        		        {
                            for (int k = 0; k < doc.Count();k++ )
                            {
                                if (k == doc.Count()-1)
                                {
                                    isoFileWriter.WriteLine(doc[k]);
                                    break;
                                }
                                isoFileWriter.Write(doc[k] + ";");
                            }

                            // Limpio datos
							doc.Clear();
                            tidvariedad.Text = "";
                            datePickerSiembra.Value = DateTime.Now;
                            datePickerEmergencia.Value = DateTime.Now;
                            datePickerEspigadura.Value = DateTime.Now;
                            datePickerFloracion.Value = DateTime.Now;
                            datePickerMadurez.Value = DateTime.Now;
                            tfs.Text = "";
                            tds.Text = "";
                            tBolsa.Text = "";
                            tfb.Text = "";
                            ttg.Text = "";
                            twg.Text = "";
                            tdg.Text = "";
                            tha.Text = "";
                            tglauco.Text = "";
                            tap.Text = "";
                            tle.Text = "";
                            tpm.Text = "";
                            tvI.Text = "";
                            tat.Text = "";
                            tah1.Text = "";
                            tlh1.Text = "";
                            tah2.Text = "";
                            tlh2.Text = "";
                            tah3.Text = "";
                            tlh3.Text = "";
                            tmje.Text = "";
                            Cobertura.Text = "";
                            RRegado.IsChecked = false;
                            RSecano.IsChecked = false;
                            RRepeticion1.IsChecked = false;
                            RRepeticion2.IsChecked = false;
                            Array.Clear(textos, 0, textos.Count());
					        break;
        		        }
    		        }                  
                    }
					
			}
		}
        private void tfs_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            valido(tfs, "FS");
        }

        private void tds_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            valido(tds, "DS");
        }

        private void tBolsa_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            valido(tfs, "Bolsa");
        }

        private void tfb_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tfb, "FB");
        }

        private void ttg_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(ttg, "TB");
        }

        private void twg_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(twg, "WG");
        }

        private void tdg_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tdg, "DG");
        }

        private void tha_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tha, "HA");
        }

        private void tglauco_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tglauco, "GLAUCO");
        }

        private void tap_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tap, "AP");
        }

        private void tle_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tle, "id LE");
        }

        private void tpm_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tpm, "PM");
        }

        private void tvI_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tvI, "VI");
        }

        private void tat_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tat, "AT");
        }

        private void tah1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tah1, "AH1");
        }

        private void tlh1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tlh1, "LH1");
        }

        private void tah2_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tah2, "AH2");
        }

        private void tlh2_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tlh2, "LH2");
        }

        private void tah3_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tah3, "AH3");
        }

        private void tlh3_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tlh3, "LH3");
        }

        private void tmje_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(tmje, "MJE");
        }

        private void Cobertura_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
        	 valido(Cobertura, "Cobertura");
        }

        private void tidvariedad_KeyDown(object sender, KeyEventArgs e)
        {
            validovariedad(tidvariedad, "id variedad");
        }

        private void RRepeticion1_Checked_1(object sender, RoutedEventArgs e)
        {
            this.textos[0] = "1";
        }

        private void RRepeticion2_Checked_1(object sender, RoutedEventArgs e)
        {
            this.textos[0] = "2";
        }

        private void RSecano_Checked(object sender, RoutedEventArgs e)
        {
            this.textos[1] = "2";
        }

		
    }
}
